﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Sinacor.Infra.UI.Controls.SmartClient;
using Sinacor.UI.Bovespa.Alocacao.Presenter;
using Sinacor.Infra.UI.Messaging.SmartClient;

namespace Sinacor.UI.Bovespa.Alocacao.View.SmartClient
{
    public partial class ConsultaErroComitentes : SinacorWindow, Presenter.IConsultaErrosAlocacoesComitentes
    {
        #region Atributos

        private WPFMessageManager _messageManager;

        #endregion

        #region Construtor

        public ConsultaErroComitentes()
        {
            this.InitializeComponent();

            this.Presenter = new ConsultaErrosAlocacoesComitentes(this);

            this.DataContext = this.Presenter;

            _messageManager = new WPFMessageManager();

            _messageManager.OnInternalMessageArrival += new WPFMessageManager.WPFInternalMessageDelegate(_messageManager_OnInternalMessageArrival);
            DtgErrosAlocacoesComitentes.NewItemType = typeof(Model.ErroAlocacaoComitente);
            this.AfterInitialize += new RoutedEventHandler(ConsultaErroComitentes_AfterInitialize);
            this.Closing += new System.ComponentModel.CancelEventHandler(ConsultaErroComitentes_Closing);
        }

        #endregion

        #region Propriedades

        public Presenter.ConsultaErrosAlocacoesComitentes Presenter { get; private set; }

        #endregion

        #region Event Handlers

        private void ConsultaErroComitentes_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            _messageManager.OnInternalMessageArrival -= _messageManager_OnInternalMessageArrival;
        }

        private void _messageManager_OnInternalMessageArrival(Sinacor.Infra.UI.Messaging.Internal.InternalMessage internalMessage)
        {
            if (internalMessage.Message != null)
            {
                if (internalMessage.MessageId == "ABERTURAIMPORTACAOEESC"
                    && internalMessage.Message != this)
                {
                    ConsultarErros();
                }
            }
        }

        private void ConsultaErroComitentes_AfterInitialize(object sender, RoutedEventArgs e)
        {
            this.Presenter.Inicializar();
        }

        private void DtgErrosAlocacoesComitentes_BufferedSelectionChanged(object sender, BufferedEventArgs<SelectionChangedEventArgs> e)
        {
            this.Presenter.ErroAlocacaoComitenteAtual = (Model.ErroAlocacaoComitente)DtgErrosAlocacoesComitentes.SelectedItem;
            this.TxtErro1.UpdateTarget(SinacorTextBox.TextProperty);
            this.TxtErro2.UpdateTarget(SinacorTextBox.TextProperty);
            this.TxtErro3.UpdateTarget(SinacorTextBox.TextProperty);
        }

        private void CmiAtualizar_Click(object sender, RoutedEventArgs e)
        {
            ConsultarErros();
        }

        #endregion

        #region Métodos Privados

        private void ConsultarErros()
        {
            try
            {
                this.ShowUserWaitingProcess();

                this.Presenter.ConsultarErrosAlocacoesComitentes();
            }
            finally
            {
                this.HideUserWaitingProcess();
            }
        }

        #endregion

        #region IConsultaErrosAlocacoesComitentes Members

        public void InformarPesquisaSemResultado()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Alocacao.Message.PesquisaSemRetorno").ToString(), SinacorMessageBoxButton.Ok, SinacorMessageBoxImage.Information);
        }

        public void AtualizarListaErrosAlocacoesComitentes()
        {
            DtgErrosAlocacoesComitentes.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        #endregion
    }
}